package com.assistant.core;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * @author Anyang
 * @version 1.0.0
 * @date 2025/10/25 05:10:01
 * @description 主程序
 */
public class MainApplication {
    private static final Logger logger = LoggerFactory.getLogger(MainApplication.class);

    public static void main(String[] args) {
        logger.info("--- 小牛语音助手启动 ---");

        try {
            // 1. 验证配置
            Config.checkConfig();

            // 2. 初始化核心引擎
            // (引擎的构造函数会负责初始化所有模块)
            AssistantEngine engine = new AssistantEngine();

            // 3. 注册 JVM 关闭钩子
            // (使用 engine::stop 实例方法引用)
            Runtime.getRuntime().addShutdownHook(new Thread(engine::stop));

            // 4. 启动引擎
            // (引擎的 start() 方法会启动麦克风并播放欢迎语)
            engine.start();

            // 5. 保持主线程存活 (因为所有工作都在子线程中)
            while (true) {
                Thread.sleep(10000);
            }

        } catch (Exception e) {
            logger.error("【主程序】启动失败，发生致命错误", e);
            System.exit(1);
        }
    }
}